//package com.ugoodtech.mdcc.client;
//
//
//import com.ugoodtech.mdcc.client.controller.MyWebSocket;
//import com.ugoodtech.mdcc.client.dto.JsonResponse;
//import net.sf.json.JSONException;
//import net.sf.json.JSONObject;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.core.MethodParameter;
//import org.springframework.http.HttpStatus;
//import org.springframework.http.MediaType;
//import org.springframework.http.server.ServerHttpRequest;
//import org.springframework.http.server.ServerHttpResponse;
//import org.springframework.http.server.ServletServerHttpRequest;
//import org.springframework.web.bind.annotation.ControllerAdvice;
//import org.springframework.web.bind.annotation.ExceptionHandler;
//import org.springframework.web.bind.annotation.ResponseBody;
//import org.springframework.web.bind.annotation.ResponseStatus;
//import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
//
//import javax.servlet.http.HttpServletRequest;
//import java.io.IOException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//
///**
// * Created with IntelliJ IDEA.
// * User: Kotone
// * Date: 2017/9/23
// * Time: 15:37
// * To change this template use File | Settings | File Templates.
// */
//@ControllerAdvice
//public class GlobalExceptionHandler implements ResponseBodyAdvice {
//
//    @Autowired
//    private MyWebSocket myWebSocket;
//
//
//    @ExceptionHandler(NullPointerException.class)
//    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
//    @ResponseBody
//    public JsonResponse handleException(NullPointerException e) throws Exception{
//        e.printStackTrace();
//            try {
//                StackTraceElement[] stackTraceElements=e.getStackTrace();
//                String javaClass="";
//                Integer line=0;
//                for(StackTraceElement stackTraceElement:stackTraceElements){
//                    String error=stackTraceElement.toString();
//                    String code=error.split("\\(")[1];
//                    if(-1!=code.indexOf("Controller")){
//                        if(-1==javaClass.indexOf("Service")){
//                            javaClass=code.split("\\.")[0];
//                            line=Integer.parseInt(code.split(":")[1].split("\\)")[0]);
//                        }
//                    }
//                    if(-1!=code.indexOf("Service")){
//                        javaClass=code.split("\\.")[0];
//                        line=Integer.parseInt(code.split(":")[1].split("\\)")[0]);
//                    }
//                }
//                if(StringUtils.isEmpty(javaClass)){
//                    String error=stackTraceElements[0].toString();
//                    String code=error.split("\\(")[1];
//                    javaClass=code.split("\\.")[0];
//                    line=Integer.parseInt(code.split(":")[1].split("\\)")[0]);
//                }
//                SimpleDateFormat simpleDateFormat=new SimpleDateFormat();
//
//                String result=simpleDateFormat.format(new Date())+"====="+javaClass+"第"+line+"行报空指针";
//                logger.warn(result);
////                Map<String,String> path= TomcatUploadUtil.addOrUpdateFile("/errorLog/","error",result.getBytes(),"txt");
//                return JsonResponse.errorResponseWithError("500",e.getMessage());
//            } catch (Exception e2) {
//                e2.printStackTrace();
//            }
//        throw e;
//    }
//
//    Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
//
//    @Override
//    public boolean supports(MethodParameter methodParameter, Class aClass) {
//        return true;
//    }
//
//    @Override
//    public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
//
//        HttpServletRequest servletRequest = ((ServletServerHttpRequest) serverHttpRequest).getServletRequest();
//        String uuid="";
//        if(null!=servletRequest.getAttribute("AddLogInterceptor-uuid")){
//            uuid=servletRequest.getAttribute("AddLogInterceptor-uuid").toString();
//        }
//        try {
//            JSONObject object = JSONObject.fromObject(o);
//            object.put("uuid",uuid);
//            if(!object.isEmpty()){
//                if(object.toString().length()>2000){
//                    logger.debug("返回结果为:"+object.toString().substring(0,2000)+"..."+"\r");
//                }else{
//                    logger.debug("返回结果为:"+object.toString()+"\r");
//                }
//            }
//            myWebSocket.sendInfo("返回结果为:"+object.toString());
//        }catch (JSONException e) {
//            e.printStackTrace();
//            if(-1!=e.getMessage().indexOf("Use JSONArray instead")){
//                try {
//                    myWebSocket.sendInfo(uuid+"返回结果为:"+o.toString());
//                    logger.debug(uuid+"返回结果为:"+o.toString()+"\r");
//                } catch (IOException e1) {
//                    e1.printStackTrace();
//                }
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return o;
//    }
//}
